package com.soft.link.impl;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.soft.link.mapper.TsRoleMapper;
import com.soft.link.model.TsRole;
import com.soft.link.service.TsRoleService;
import com.soft.link.utils.UniqueUtil;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * company 重庆庆云石油工程技术有限责任公司
 * FileName TsRoleServiceImpl
 * Package com.soft.link.impl
 * Description 角色服务实现类
 * author Administrator
 * create 2018-03-31 22:16
 * version V1.0
 */
@Service
public class TsRoleServiceImpl implements TsRoleService {
    @Autowired(required = false)
    TsRoleMapper tsRoleMapper;

    /**
     * @param * @param tsRole
     * @throws {数据库异常，内存溢出}
     * @methodname findTsRoleList
     * @Description 查询角信息
     * @author 黄学乾
     * @create 2018/4/25/025 9:34
     */
    @Override
    public List<TsRole> findTsRoleList(TsRole tsRole) throws Exception {
        return tsRoleMapper.findTsRoleList(tsRole);
    }

    /**
     * @param * @param tsRole
     * @throws {数据库异常，内存溢出}
     * @methodname findTsRoleListPage
     * @Description 分页信息
     * @author 黄学乾
     * @create 2018/4/25/025 9:34
     */
    @Override
    public JSONObject findTsRoleListPage(TsRole tsRole) throws Exception {
        JSONObject returnObj = new JSONObject();
        PageHelper.startPage(tsRole.getOffset(), tsRole.getLimit());
        List<TsRole> tsRoleList = findTsRoleList(tsRole);
        // 取分页信息
        PageInfo<TsRole> pageInfo = new PageInfo<TsRole>(tsRoleList);
        returnObj.put("total", pageInfo.getTotal());
        returnObj.put("rows", JSON.toJSON(tsRoleList));
        return returnObj;
    }

    /**
    * @methodname saveTsRole
    * @Description {添加角色}
    * @author 黄学乾
    * @create 2018/4/25/025 16:29
    * @param  * @param tsRole
    * @throws {如果有异常说明请填写}
    * @return 
    */
    @Override
    public int saveTsRole(TsRole tsRole) throws Exception {
        if(StringUtils.isEmpty(tsRole.getRoleId())){
            tsRole.setRoleId(UniqueUtil.uuid());
            tsRole.setStatus(0); // 插入默认启用状态
        }
        return tsRoleMapper.insertSelective(tsRole);
    }

    @Override
    public int updateTsRole(TsRole tsRole) throws Exception {
        return tsRoleMapper.updateByPrimaryKeySelective(tsRole);
    }

    /**
    * @methodname findTsRole
    * @Description {根据角色菜单查询角色信息}
    * @author 黄学乾
    * @create 2018/4/27/027 9:57
    * @param  * @param roleId
    * @throws {如果有异常说明请填写}
    * @return 
    */
    @Override
    public TsRole findTsRole(String roleId) throws Exception {
        return tsRoleMapper.selectByPrimaryKey(roleId);
    }

    /**
     * @param tsRoles 角色信息
     * @throws {批量删除角色信息}
     * @methodname deleteBatchByTsRole
     * @Description {删除角色，逻辑删除，注意操作}
     * @author 黄学乾
     * @create 2018/4/30/030 21:41
     */
    @Override
    @Transactional
    public int deleteBatchByTsRole(List<TsRole> tsRoles) throws Exception {
        int resInt = 0;
        if (tsRoles != null && tsRoles.size() > 0) {
            for (TsRole tsRole : tsRoles) {
                tsRole.setStatus(1); // 设置逻辑删除
                resInt = resInt + tsRoleMapper.updateByPrimaryKeySelective(tsRole);
            }
        }
        return resInt;
    }
}
